home *** CD-ROM | disk | FTP | other *** search
/ BBS Toolkit / BBS Toolkit.iso / doors_2 / twview91.zip / DOCS.TXT < prev    next >
Text File  |  1992-03-11  |  26KB  |  505 lines

  1. Documentation (heh!) for the Trade Wars Viewer programs -- DOS version
  2. Last revision: 3/11/92 by Woody
  3.  
  4. Abstract:
  5. ---------
  6.  
  7. The game Trade Wars is a delightful mix of economic strategy, exploration, and
  8. military conquest.  For the first two to succeed, however, requires a good
  9. working knowledge of the universe.  Unfortunately, keeping all the information
  10. about which sectors you've visited, which are ports, and which is connected to
  11. which can become a nightmare.  The two main programs, "Convert" and "Examine"
  12. should help to make keeping that information straight a little easier, and
  13. increase your enjoyment of the game.
  14.  
  15. The first program, "Convert," creates a data base of explored sectors, warps
  16. for each sector, if it is a port or not, and if a port, what it is selling.
  17. It is able to use the "interrogation" mode of your Crai, to enable fairly
  18. rapid and simple collection of data about the universe.
  19.  
  20. The second, "Examine," allows you to look at that data base in a variety of
  21. ways, from visual graphing of the data to asking questions about nearby ports
  22. and so on.
  23.  
  24. A third, "Offline," performs various inquiry tasks.
  25.  
  26.  
  27. What you need to run the programs:
  28. ----------------------------------
  29.  
  30. To create the data base, you need to be in a terminal program that allows
  31. ASCII uploads and ASCII captures.  The best situation is one that allows you
  32. to do them simultaneously, i.e., capture input while uploading a file.
  33. Second best is to have a large scrollback buffer, that allows you to take
  34. pieces out of the scrollback and append them to a file.
  35.  
  36. There are two versions of the programs, one for DOS machines and another for
  37. Macs.  (Source code is available if anyone wants to port it to the Amiga or
  38. something.  It should only require minor changes to file I/O and graphics.)
  39. If you are running the DOS version, you will need the device driver (.BGI
  40. files) suitable for your machine.
  41.  
  42.  
  43. HOW TO CREATE AND MAINTAIN THE ORIGINAL DATA BASE:
  44. --------------------------------------------------
  45.  
  46. There are two methods to develop the data base.  Which you use depends on (i)
  47. how good you are at flinging files about and (ii) how much new information you
  48. are trying to collect.  If you just want to find out about a few sectors, use
  49. the "old" method.  If you want to collect a full set of data, use the "new"
  50. computer interrogation mode.
  51.  
  52. In both modes, you should should turn ANSI off at least for the duration of
  53. the transfer.  Do this with <N> from the main computer menu.
  54.  
  55.  
  56. The "Old" method.
  57. -----------------
  58.  
  59. First, log into the game, and invoke the ship's computer.  Tell the computer
  60. you want the known universe report, by hitting K.  Now start an ASCII capture.
  61. If you have explored more than half the universe, tell the computer that you
  62. want unexplored sectors by hitting U and return.  The computer will list your
  63. unexplored sectors.  If you have explored less than half, tell the computer
  64. you want explored sectors by hitting E and return.  The computer will list
  65. your known sectors.  If you've explored a lot of sectors, there may be a
  66. [PAUSE] in the listing; just hit the space bar and go on past it.  (Its okay
  67. if it shows up in your ASCII download.)  When the listing is finished, turn
  68. off the capture.  Your captured file must contain either the line that says
  69. "You have explored the following sectors:" or "You have NOT explored the
  70. following sectors:" and at least one blank line after the sectors.  (A little
  71. more before or after is okay too.)
  72.  
  73. Now shift from your terminal program to the program "Convert".  At the first
  74. prompt, it is asking for your initial data base.  If you've already developed
  75. a data base, and are just updating it, give the name of your old base; if you
  76. don't have an existing data base, just hit a return.  Next, it will ask if it
  77. should be reading a list of explored sectors, a log of inter-warp and port
  78. information, and so on.  Choose option 1.  Next, it'll ask for your "Explored
  79. Sectors" or "Unexplored Sectors" file.  Next, it will ask you to name the file
  80. to generate: use anything you like here but being careful to not accidentally
  81. overwrite something you want to keep.  (The program is smart enough to ask if
  82. you really mean to clobber a file.)  The last question the program will ask
  83. you is if you want an update on your ports: this will add a request for update
  84. for every port. The program maintains information about current trading levels
  85. for each known in the game; this will freshen that information to the current
  86. data. It probably isn't needed very often, but once in a while to update
  87. things it is useful.  (I generally use that only if I've lots of time to play
  88. around: I refresh "interesting" ports by using an upload from the "Examine"
  89. program.)
  90.  
  91. What this step will do is create a file that you can upload to generate lots
  92. of printouts.  Essentially, what it creates is a file with I<sector number>
  93. and R<sector number> for every new sector.  The nice thing is that this will
  94. interface well with the Crai on board your ship.
  95.  
  96. Now back to Tradewars.  You are probably still in Computer mode; if not, get
  97. there.  What you want to do is upload the contents of the file you just
  98. generated with the Convert program into the Crai on your ship.  If you can
  99. do that while doing an ASCII capture, start the capture and then start the
  100. upload.  Otherwise, you may have to start the upload and then retrieve the
  101. results later from your scrollback buffer.  In any case, your captured file
  102. should contain all the I reports (sector nnn has warps to : xxx - yyy - zzz
  103. etc) and all the R reports (Commerce report for ...).  There will be lots of
  104. "I have no record of a port in that sector."'s: that's okay -- have to find
  105. out if there is a port there or not.  If there are a couple of ports that
  106. you are trying to keep track of, you can also call up a port report on them
  107. and store that in the downloaded file: just make sure that when you hit your
  108. R you don't just carriage return but explicitly type in the sector number.
  109.  
  110. Back to the "Convert" program.  Again, tell the program your old data file
  111. (or hit return to start fresh) and this time we are in part 2.  Tell it the
  112. name of the ascii download or capture you just made, and the name you want to
  113. use for your database.  The program will generate the data base.
  114.  
  115.  
  116. The "New" method.
  117. -----------------
  118.  
  119. First you have to get into computer interrogation mode of your Crai.  To do
  120. this, you need to send ASCII characters 200 through 205 to the Crai.  There
  121. is a file "ON.TXT" included in this package -- do an ASCII upload of ON.TXT
  122. after you have activated the Crai, and you will see a ":" appear.
  123. Alternatively, if you are on an IBM, you can hold down the Alt key, then
  124. type 200, release, hold down alt, type 201, release, etc.
  125.  
  126. Now that you are in interrogation mode, start your ASCII capture; I recommend
  127. using an extension of .SCT.  Type I, and the computer will immediately begin
  128. spewing out sector numbers and warps.  When that finishes, stop the capture,
  129. and start another capture, this time using an extention of .PRT.  Type R, and
  130. the computer will begin spewing out port information.  When that finishes,
  131. stop that capture, shell to DOS, and run the program "Convert."
  132.  
  133. There are two new options in convert: option 8, which parses the .SCT report
  134. you prepared, and option 9 which parses the .PRT report.  Invoke them, then
  135. exit Convert and your data base is complete.
  136.  
  137. This "new" method does not identify class 0 ports (Terra, for one), nor does
  138. it identify the star dock (as the old method did from logs).  That information
  139. is not available from interrogation mode, so you have to add them manually by
  140. using the edit mode of "Convert."
  141.  
  142.  
  143. OTHER CONVERT OPTIONS
  144. ---------------------
  145.  
  146. This takes care of 1 & 2 (old style sector/port info processing) and 8 & 9
  147. (new style sector/port info processing).  For to have the program remember
  148. where you have left fighters, capture a <G> report from the main menu
  149. (remember, with ANSI turned off) and then feed that through option 3.
  150.  
  151. For the Major Space Lanes data (those sectors that get cleared by the Feds
  152. each night) I have a problem.  It turns out that the Martin's haven't used
  153. any of the standard shortest path algorithms in their program.  (Amateurs,
  154. sigh..)  So we have to get the Crai to do the shortest path computation.
  155. To do the computation, you have to know the location of the stardock, and
  156. the two other ports that sell fighters and shields other than Terra.  Option
  157. 4 will generate an upload file, that option 5 will then parse.
  158.  
  159. Many people have reported problems getting the upload file to work properly.
  160. There are two solutions: either fiddle with your ascii upload so that it
  161. doesn't send out more characters until the computer finishes working with
  162. the previous set, or just enter the file generated in #4 by hand yourself.
  163. Its a fairly small file to type.
  164.  
  165. Option 6 allows fellow teammates to collaborate.  You can feed in their
  166. information about sectors, ports, and so on, and use it for yourself.  Of
  167. course, ports that you haven't visited will be marked as "blocked" next time
  168. you do a port scan (since you aren't receiving info from them) but you will
  169. be able to see what kind of port they are, and approximately how much they
  170. are selling.
  171.  
  172. Option 7 allows direct editing.  This is important if, for example, you've
  173. been using the "New" method only, and you know where the ports that sell
  174. Holds, Fighters, and Shields are; if you know the location of the Stardock;
  175. if someone in the game destroys a port you've visited (and you want to mark
  176. that as empty space again); if you create a port; and a new feature to 0.91,
  177. if you want to mark a sector as to be avoided (so TWVIEW won't plot a path
  178. across that sector or show paths from it on the display).  Just choose 7 and
  179. follow the prompts.
  180.  
  181. STRUCTURE OF THE DATA BASE
  182. --------------------------
  183.  
  184. The database is in plain text, so you can examine it yourself if you like.
  185. Information is divided into several categories.  First, are the two lines:
  186.      ::Tradewars Data file::
  187.      SpaceDock is   200
  188. or whatever the corresponding sector is if you have visited the space dock,
  189. or possibly "SpaceDock is 0" if you have not visited it or do not know the
  190. location of the space dock sector.
  191.  
  192. Next is a line of the form:
  193.      7  <- number of notes
  194. where the integer represents how many "Notes" you've stored for the game.
  195.  
  196. A note has the form:
  197.      13 Don't Go Near This Sector!!!!
  198. i.e., a sector number, and a short bit of text.  You can add or delete notes
  199. from within the "Examine" program, as well as display those sectors for which
  200. you've recorded notes.
  201.  
  202. Next is a line of the form:
  203.      105  <- number of Port Infos
  204. followed by lines of the form:
  205.      120    3000    3280   -2530 100  32 100
  206. where the first integer is the sector number for the port; next are the levels
  207. for the three trade goods "Fuel Ore," "Organics," and "Equipment."  A positive
  208. number means that the port is selling the stuff, and a negative number means
  209. the port is buying up to that much of the stuff.  (Remember that the larger
  210. the magnitude of the number, the better the price you get -- ports are more
  211. willing to stretch when the numbers are higher!)  The last three numbers are
  212. percentages of maximum use: a value of 100 means the port is fully refreshed
  213. for that good, 0 means they are all sold out or are not interested in buying
  214. anything.
  215.  
  216. Special Note: If a port doesn't show up on the R report, but there had been
  217. port information stored for it, the previous sales levels are preserved, but
  218. the port usages are all set to zero.  This allows you to identify ports that
  219. have been captured by the Ferrengi or opposing players.
  220.  
  221.  
  222. The sectors are in no special order (actually, in order of appearance from the
  223. logs over time) but there must be as many lines as specified in the "<- number
  224. of Port Infos."
  225.  
  226. Next is a line of the form:
  227.      Sector data starts here ...
  228. followed by lines of the form:
  229.      1  6    2    3    4    5    6    7  8     2
  230. <sector> <number of warps> <warp1> ... <warpn> <port code> <etc code>
  231.  
  232. Here, for example, is a report for sector 1: it has six warps, to positions 2
  233. through 7, a port code of 8 (which actually corresponds to class 0) and an
  234. "etc" code of 2.  A "Port Code" corresponds to -1, if the sector is not a
  235. port, 0 through 7 based upon a three bit representation of selling or buying
  236. (for example, sector 120 is selling Ore and Organics and buying Equipment, so
  237. its port code would be 1 * 1 + 1 * 2 + 0 * 4 = 3; don't worry about it, the
  238. program handles figuring out port codes and so on).  The "etc" code tells
  239. about various pieces of information, again depending on bit representation.
  240. Currently the codes in use are:
  241.      NoteExists = 1;
  242.      IsPort     = 2;
  243.      HasFighters= 4;
  244.      SpaceLane  = 8;
  245.      Avoid      = 16;
  246.      Stardock   = 128;
  247. but others will probably follow.  (Note that the Stardock is also a port; so
  248. its etc code is 128 + 2 = 130; if a random port had a note attached, its code
  249. would be 2 + 1 = 3.)
  250.  
  251.  
  252. HOW TO USE THE DATA BASE VIEWER
  253. -------------------------------
  254.  
  255. Its pretty well impossible to draw a decent map with all 1000 sectors, so the
  256. data base viewer doesn't try to do that.  Run "Examine", and tell it the name
  257. of your data base.  You will be presented with a list of options.  In version
  258. 0.91, you get to choose from the following list:
  259.  
  260.      Choose one of:
  261.        <A>dd note
  262.        <B>usiest ports
  263.        <C>lassify ports
  264.        <D>elete note
  265.        Closest place to buy <F>ighters, shields, and holds
  266.        Note <I>nformation
  267.        <L>ength of path between two sectors
  268.        <M>isc config options
  269.        <N>earest port
  270.        <P>aired ports
  271.        <Q>uit
  272.        Nearest <S>ectors
  273.        <T>ranswarp menu
  274.        Nearest <U>nexplored sectors
  275.        <V>iew space in graphic format
  276.        <W>here is nearest fighter cloud
  277.         Net change <X>
  278.  
  279. Here is what the commands will do:
  280.  
  281.      <A>dd note
  282.      <D>elete note
  283.      Note <I>nformation
  284. These manage the notes that you may have stored on your universe.  Typical
  285. notes might be "enemy base here!", "great trading spot", "Fedspace", or
  286. whatever.  Option "A" will add a note to a sector, option "D" will delete a
  287. note from a sector, and option "I" will present you with a list of the notes
  288. you've made, sorted by distance from a current sector.
  289.  
  290.      <B>usiest ports
  291. This will offer a display of your ports, sorted by usage.  First to be listed
  292. will be all class 0 ports and all ports with a usage field of 0.  (In
  293. particular, any port that has been previously scanned, but for which you can
  294. not now obtain a scan will appear here.)  Then will occur all ports sorted by
  295. fraction of maximum use.
  296.  
  297.      <C>lassify ports
  298. Want to know where all the BBB ports are?  This is the command for you.  It
  299. will list all known ports of a specific class.  Choose the class from the
  300. menu, and you get the regular port listing.
  301.  
  302.      Closest place to buy <F>ighters, shields, and holds
  303. Invoke this option, and you will be asked for your current sector.  The
  304. computer will then display the path from that sector to any place it knows of
  305. to buy fighters: if the only class 0 port you know is Terra, that is the only
  306. one it will display, but if you know of the others, it will display a shortest
  307. path to the closest of those sectors.
  308.  
  309.      <L>ength & path between two sectors
  310. You specify two sectors, and it will tell you the shortest way it knows of to
  311. get between those two sectors.  Note that this may NOT be the actual shortest
  312. path if there are sectors you have not yet explored that might give you a
  313. better route.  It gives you the shortest path YOU'VE EXPLORED between those
  314. two sectors.  It will not route your path across an avoid.  The program will
  315. actually list the path in both directions, with a pause (for a return) in
  316. between.
  317.  
  318.      <M>isc config options
  319. Currently, there are two allowed configuration options.  You can turn the
  320. color off: this prints everything in monochrome, and changes port colors to
  321. small printouts of the actual ports.  It looks good on my laptop... your
  322. mileage may vary.  (Suggestions?)  Anyway, if you load GRAPHICS.COM, this
  323. allows you to print the screen and still see port sector numbers.  The other
  324. option is for verbose or terse sector descriptors.  In verbose mode, it will
  325. print "Fighters", "Space Lane", "Dead End", "Avoid", etc.  In terse mode, it
  326. will print "F", "SL", "DE", "AV" and so shouldn't overflow the line.
  327.  
  328.      <N>earest port
  329.      Nearest <S>ectors
  330.      Nearest <U>nexplored sectors
  331. These displays will give you information about what is close to your current
  332. position.  Information displayed includes if the sector has been explored, any
  333. notes, if its a port, its status (SSB for example, means selling Ore, selling
  334. Organics, and buying Equipment) and levels of production.  If you ask for the
  335. "Nearest Port" report, only ports are listed.  I find the "Nearest Unexplored
  336. sectors" report VERY useful for exploration purposes: I can just head toward
  337. the nearest unexplored sector easily this way.
  338.  
  339.      <P>aired ports
  340. This is one of my favorites.  What it does is go through the data base and
  341. find ports that are adjacent (i.e. you can warp between them using normal
  342. space in one turn) and are compatible (i.e. at port A you can buy a good
  343. that is sold at port B, and you can sell a good that is bought at port B).
  344. You can be selective (greedy) and only specify ports that are compatible in
  345. the very profitable Organic-Equipment trade, or ask for all compatible pairs.
  346. The program will offer you the opportunity to have the results sent to a text
  347. file, which you can print later (if you can't run the program simultaneously
  348. with your terminal emulator, you can get hard copy of the "hot sectors") and
  349. you can have the results sent to a text file that are compatible for upload
  350. (i.e. part 2 of the "Convert" program so you can keep an eye on trading levels
  351. at these critical ports).  Displayed to the screen is an integer "factor" --
  352. this number is based upon levels of goods available in the critical trades,
  353. and will give a rough estimate of how good a deal you are going to get.
  354.  
  355.      <T>ranswarp menu
  356. This drops down to a submenu that deals with locations of deployed fighters
  357. and using a transwarp drive.  Most submenu items are pretty obvious: you
  358. specify where you have deployed fighters, or tell the data base that some
  359. #%!%@$ has shot up your deployed fighters, or list the places the data base
  360. knows you've deployed your fighters.  The only thing that needs mentioning
  361. is the shortest route submenu item: you specify where you are, and where you
  362. want to go.  It figures out, based upon where your fighters are located, the
  363. fastest route to get there (using a transwarp jump and then normal autopilot).
  364. It may say to transwarp to your current sector -- that just means the shortest
  365. route lies through normal space.
  366.  
  367.      <V>iew space in graphic format
  368. Viewing the data will attempt a graphic display on your screen of space: you
  369. tell it about how many rows across and columns up and down of sectors to use
  370. (maximums are given in the program: hit a return, and you get a default value
  371. that is about 3/4 of maximum); you tell it the base sector you want in the
  372. center of the screen (it has to be a sector you've visited!); and you tell it
  373. how large a radius to display (all sectors it is aware of no more than that
  374. distance away from your base sector).  It will try to display the collection
  375. of warps that make up your known space.  Ordinary, visited sectors are shown
  376. as circles, ports as rectangles.  (Unexplored sectors just have their numbers
  377. floating in space, and if you have color are in yellow.)  Lines connecting
  378. sectors means there is a warp connecting one with the other.  Dashed lines
  379. mean that you don't know if the warp is two way or not: if one end of the line
  380. connects to an unexplored sector, you will have a dashed line.  If both of the
  381. sectors at each end are explored, the warp really is one way!  (Try graphing
  382. around the StarDock and around the class 0 ports.)  Don't try to graph too
  383. many sectors at once: the screen gets too busy, and you won't be able to tell
  384. what connects to what.
  385.  
  386.  
  387. Use of the OFFLINE program 
  388. -------------------------- 
  389.  
  390. The OFFLINE program is envisioned as something you use while not logged into
  391. the game, to decide upon strategy and the like.  Version 0.91 gives the
  392. following menu:
  393.  
  394.     <C>ontrolled sector status
  395.     <D>ead end analysis
  396.     suggest <E>therprobe targets
  397.     visit <M>ultiple sectors efficiently
  398.     <Q>uit
  399.     <S>tellar dispersion
  400.     <T>raffic area analysis
  401.     <V>isit every sector
  402.  
  403. The <C>ontrolled sector status display is useful to look for backdoors or
  404. sectors that you have missed in setting out a domain.  Essentially, you
  405. specify militarized sectors that mark the perimeter of your domain, and then
  406. a sector that is "inside".  It runs through the area you can get to without
  407. running a militarized gauntlet.  If it finds an opening out into the major
  408. space lanes, there is a problem...
  409.  
  410. The <D>ead end analysis provides you with the dispersion of the dead ends by
  411. tunnel length.  A tunnel is a sequence of sectors adjacent to only two
  412. sectors, the last of which is a dead end.  These are convenient places to
  413. place your citadels, as you can fortify the citadel and make someone fire
  414. off lots of photon torpedos or fight through lots of defenses to get to your
  415. home sector.  After displaying the dispersion, it asks for a tunnel length,
  416. and then will display all tunnels of that length.  It checks for "back
  417. door"s, i.e. one way warps into your tunnel, then displays the distance of
  418. the home sector from terra.
  419.  
  420. suggest <E>therprobe targets and <V>isit every sector efficiently are two
  421. commands that you might use in the endgame.  Lets assume you have already
  422. mapped all the sectors and are just looking for where your opponents have
  423. built up their citadels.  What these allow is building up of a "map" of
  424. sectors you have recently visited/scanned recently, so you can tell where
  425. your opponents are hiding.  The former will make a suggestion to sectors
  426. that will show lots of new sectors for you, and the last will actually offer
  427. a circular path through the galaxy that will allow you to visit or scan
  428. every possible sector.  (Incidentally, a galactic tour, from scratch, takes
  429. about 1000 moves.  A scout can easily do that in a week.  If you use up a
  430. bunch of etherprobes, you can do it in a long (and expensive) day.)
  431.  
  432. visit <M>ultiple sectors efficiently is intended to provide the following:
  433. you know that you want to hit sectors A, B, C, D, and are going to go through
  434. normal space -- the program will suggest which is the best order to visit
  435. the sectors.  Unfortunately, its getting late, and while there is an easy
  436. recursive procedure here, I just don't feel like writing it from scratch at
  437. this point, then testing it... oh, well, you get docs instead.  Watch for it
  438. in version 0.92.
  439.  
  440. <S>tellar dispersion will provide the dispersion of sectors from a given
  441. sector.  This will give you a general feel for whether a sector is near the
  442. middle of the galaxy (lots of sectors at distance 3, 4, 5, 6) or on the rim
  443. of the galaxy (lots of sectors at distance 11, 12, 13, 14).  Useful,
  444. somewhat, in deciding where to hide citadels or place threatening fighter
  445. clouds.
  446.  
  447. <T>raffic area analysis will take a long time to compute... but when it
  448. finishes, it will determine via connectivity what the most likely sector to
  449. find a trader is.  Basically, it runs through all million paths between
  450. pairs of sectors, weights the path by its ends (in "uniform" weights, the
  451. weight is 1; in "port heavy" weights, the weights are
  452.  
  453.       Port Type     Weight
  454.       blank sector     0
  455.       BBB, SSS         1
  456.       SBB, BSS         2
  457.       BSB, BBS         4
  458.       SSB, SBS         4
  459.       HFS             10
  460.       Terra           20
  461.       space.dock      50
  462.  
  463. The number that comes out is the number of paths through that given sector,
  464. with paths weighted as above.  High numbers are good places to put
  465. fighter/mine blockades; or small numbers of fighters to collect tolls or
  466. just track the trader traveling through the sector.
  467.  
  468. So, that is the program at the moment.  There are still lots of things I
  469. want to add, but I make my living as a professor, not a programmer... this
  470. is supposed to be fun, see?  :-) Still, the program will probably make it to
  471. version 1.0, so I can stop dealing with it, someday...
  472.  
  473.  
  474. FEEDBACK
  475. --------
  476.  
  477. WWIVnet:  The best place for info is 510-376-1554; leave mail to number 1.
  478.           If you are part of a WWIVnet board, you can mail 1@5056.
  479.  
  480. internet: I can be reached as woody@galileo.stmarys-ca.edu.  The current
  481.           version of the program is also available by anonymous ftp from
  482.           galileo.stmarys-ca.edu (149.137.1.1) under /pub/twview.
  483.  
  484. Yes, I do consider suggestions.  Sometimes the answer is "no".  Sometimes it
  485. works its way into the program.  If you want your suggestion to almost
  486. surely be included in the code, include a source patch!  ;-)
  487.  
  488.  
  489.  
  490. ACKNOWLEDGEMENTS
  491. ----------------
  492.  
  493. Thanks, of course, to the Martins for such a great game!
  494.  
  495.  
  496. COPYRIGHT AND LICENSING STUFF
  497. -----------------------------
  498.  
  499. Copyright 1991, 1992 by Robert Weaver.  All Rights Reserved.  You may not
  500. distribute this for any fee beyond the reasonable costs of distribution.
  501. Permission is granted to distribute this document and the related
  502. executables and source code provided this notice is preserved, and anyone
  503. you give the executable has the ability to obtain this documentation and the
  504. accompanying source files.
  505.